package com.dmwork.service.interaction.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dmwork.service.interaction.entity.FeedComment;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dmwork.service.interaction.entity.vo.CommentMessageVo;
import com.dmwork.service.interaction.entity.vo.FeedCommentMessageVo;

import java.util.Collection;
import java.util.List;

/**
 * <p>
 * 动态评论表 服务类
 * </p>
 *
 * @author 李天
 * @since 2021-05-07
 */
public interface FeedCommentService extends IService<FeedComment> {

    /**
     * 指定评论的点赞数量-1
     * @param commentId 评论id
     */
    void decreaseLikeCount(String commentId);

    /**
     * 指定评论的点赞数量+1
     * @param commentId 评论id
     */
    void increaseLikeCount(String commentId);

    /**
     * 获取对动态的评论的分页
     * @param feedId 动态id
     * @param sortType 评论排序规则【sortType=0 -> 按照热度即点赞数降序排序，sortType=1 -> 按照发布时间降序排序】
     * @param page 页数
     * @param limit 每页记录数
     * @return 评论记录分页
     */
    Page<FeedComment> getCommentPage(String feedId, Integer sortType, Integer page, Integer limit);

    /**
     * 获取指定评论下的回复的分页
     * @param commentId 指定评论id
     * @param sortType 评论排序规则【sortType=0 -> 按照热度即点赞数降序排序，sortType=1 -> 按照发布时间降序排序】
     * @param page 页数
     * @param limit 每页记录数
     * @return 回复记录分页
     */
    Page<FeedComment> getReplyPage(String commentId, Integer sortType, Integer page, Integer limit);

    /**
     * 获取他人回复自己评论的消息
     * @param commentIdList //评论id列表，数据以其为顺序
     * @return
     */
    List<FeedCommentMessageVo> getReplyMessageList(List<String> commentIdList);

    /**
     * 获取并组装出动态评论消息列表
     * @param feedCommentIdList 动态评论id列表
     * @return
     */
    List<CommentMessageVo> getCommentMessageList(List<String> feedCommentIdList);
}
